Next: Operator Precedence Grammars, Up: SMIE [Contents][Index]
SMIE is meant to be a one-stop shop for structural navigation
and various other features which rely on the syntactic structure
of code, in particular automatic indentation. The main entry
point is smie-setup which is a function typically
called while setting up a major mode.
Setup SMIE navigation and indentation. grammar
is a grammar table generated by
smie-prec2->grammar.
rules-function is a set of indentation rules for
use on smie-rules-function. keywords
are additional arguments, which can include the following
keywords:
:forward-token fun: Specify the
forward lexer to use.:backward-token fun: Specify
the backward lexer to use.Calling this function is sufficient to make commands such as
forward-sexp, backward-sexp, and
transpose-sexps be able to properly handle
structural elements other than just the paired parentheses
already handled by syntax tables. For example, if the provided
grammar is precise enough, transpose-sexps can
correctly transpose the two arguments of a +
operator, taking into account the precedence rules of the
language.
Calling smie-setup is also sufficient to make TAB
indentation work in the expected way, extends
blink-matching-paren to apply to elements like
begin...end, and provides some commands that you can
bind in the major mode keymap.
This command closes the most recently opened (and not yet closed) block.
This command is like down-list but it also
pays attention to nesting of tokens other than parentheses,
such as begin...end.